package com.le.tester.leetcode;

import org.springframework.context.annotation.Bean;

import java.util.HashMap;
import java.util.Map;

/**
 * 描述：罗马数字转换成整数
 */
public class RomanInt {
    public int romanToInt(String s) {
//        int sum = 0;
//        //记录值位置，第一个值的前面还是后面
//        //第一个数如果比第二个值大，那么就是+
//        //第一个数如果比第二个值小，那么就是-
//        int post = 0;
//        int now = 0;
//        for (int i = 0; i < s.length(); i++) {
//            switch (s.charAt(i)) {
//                case 'I':
//                    sum += 1;
//                    now = 1;
//                    break;
//                case 'V':
//                    sum += 5;
//                    now = 5;
//                    break;
//                case 'X':
//                    sum += 10;
//                    now = 10;
//                    break;
//                case 'L':
//                    sum += 50;
//                    now = 50;
//                    break;
//                case 'C':
//                    sum += 100;
//                    now = 100;
//                    break;
//                case 'D':
//                    sum += 500;
//                    now = 500;
//                    break;
//                case 'M':
//                    sum += 1000;
//                    now = 1000;
//                    break;
//            }
//            if (now > post) {
//                sum -= 2 * post;
//            }
//            post = now;
//        }
//        return sum;

        int sum = 0;
        //用第一个值为基准
        int flag = getValue(s.charAt(0));
        for (int i = 1; i < s.length(); i++) {
            if (flag < getValue(s.charAt(i))) {
                sum -= flag;
            } else {
                sum += flag;
            }
            //flag移动
            flag = getValue(s.charAt(i));
        }
        sum += flag;
        return sum;
    }

    public int getValue(char ch) {
        switch (ch) {
            case 'I':
                return 1;
            case 'V':
                return 5;
            case 'X':
                return 10;
            case 'L':
                return 50;
            case 'C':
                return 100;
            case 'D':
                return 500;
            case 'M':
                return 1000;
            default:
                return 0;
        }
    }

    public static void main(String[] args) {
        RomanInt romanInt = new RomanInt();
        System.out.println(romanInt.romanToInt("VI"));
    }
}
